/**
 * File: ListNode.js
 * Created Time: 2022-12-12
 * Author: IsChristina (christinaxia77@foxmail.com)
 */

/**
 * Definition for a singly-linked list node
 */
class ListNode {
    val;
    next;
    constructor(val, next) {
        this.val = (val === undefined ? 0 : val); 
        this.next = (next === undefined ? null : next); 
    }
    
    /**
     * Generate a linked list with an array
     * @param arr
     * @return
     */
    arrToLinkedList(arr) {
        const dum = new ListNode(0);
        let head = dum;
        for (const val of arr) {
            head.next = new ListNode(val);
            head = head.next;
        }
        return dum.next;
    }

    /**
     * Get a list node with specific value from a linked list
     * @param head
     * @param val
     * @return
     */
    getListNode(head, val) {
        while (head !== null && head.val !== val) {
            head = head.next;
        }
        return head;
    }
}

module.exports = ListNode
